A portion of the disclosure of this patent document contains material, which is subject to copyright protection. This patent document may show and/or describe matter, which is or may become trade dress of the owner. The copyright and trade dress owner has no objection to the facsimile reproduction by any one of the patent disclosure, as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright and trade dress rights whatsoever.
1. Field of the Invention
The present invention relates generally to data processing systems and, more particularly, to object oriented data management. The present invention further relates to visual representation of data as files stored on logical drives.
2. Description of Related Art
A computer operating system represents a collection of computer programs or routines which control the execution of application programs and that may provide services such as resource allocation, scheduling, input/output control, and data management. Most operating systems store logical units of data in files, and files are typically grouped in logical units of folders. Folders are themselves files which identify the files assigned to them and a folder can store other folders. Folders are sometimes also referred to as directories. An interrelated collection of files is called a file system.
Most file systems have not only files, but also data about the files in the file system. This data typically includes time of creation, time of last access, time of last write, time of last change, file characteristics (e.g., read-only, system file, hidden file, archive file, control file), and allocation size.
Most operating systems are designed to shield applications from direct interaction with the hardware which actually store file systems. File systems typically are stored in mass storage devices. A mass storage is a device having a large storage capacity, and may be read-write (e.g., a hard disk drive) or read-only (e.g., a CD-ROM drive). Some mass storage devices, for example RAID systems, comprise a collection of mass storage devices. Mass storage devices also typically have the quality of non-volatility.
Most contemporary operating systems, and Windows NT/95/98 in particular, have layered models of drivers where each layer has a particular set of responsibilities. On the lowest level there are drivers that work directly with hardware (mass storage devices, network cards, buses, etc.). Higher level drivers communicate with lower level drivers in order to exchange information between the hardware the user. A driver for one type of mass storage device will differ from a driver for another type of mass storage device, and both of these drivers will differ from a driver used to interface the operating system to a printer.
Typical hard disk drives store data in minimum units of sectors. Sectors on a hard disk drive typically comprise an addressable subdivision of a track used to record one block of data on the hard disk drive. Hard disk device drivers typically provide services for reading sectors from a hard disk drive and writing sectors to the hard disk drive. The hard disk device driver typically relates to the data only on the sector-level, and cannot relate to the data on a file system level.
The storage space of a mass storage device is logically divided into one or more logical disks also known as partitions. Conversely, drivers are available which will treat a group of mass storage devices as a single logical disk. In Windows operating systems, each logical disk is served by a disk device driver which also holds a drive designation, C:, D:, E:, etc. Windows operating systems don""t limit logical disks being part of a mass storage device. For example, a RAM disk uses part of the computer""s operating memory as a storage of its sectors.
The task of interfacing applications to the contents of a logical disk is assigned to a file system driver. A file system driver is a collection of function routines and file management structures that perform various tasks related to files and folders stored in logical disks. The function routines of a file system driver are used to open specified files, read specific blocks of data, write specific blocks of data, and close files. A file system driver is a significant portion of an operating system. File system drivers uses the services of a disk device driver to read sectors, translate sector data and give the user lists of files stored on the hard disk drive.
The structure of data stored in a logical disk is file system-dependent. For example, the FAT file system requires a logical disk to have a boot sector that describes location of File Allocation Tables (FAT) sectors and root directory sectors within this disk. Other file systems, such as NTFS, HPFS, etc. operate with different data structures and are incompatible with the structures of other file systems.
The process of coupling a file system driver and a disk device driver is called xe2x80x9cmounting of the file system on the disk device.xe2x80x9d When the operating system detects a new disk device in the system, the operating system sends a mount request to each file system driver that is currently registered with the operating system. The mount request includes a number of parameters, including a reference to the disk device driver that serves the new disk device. When a registered file system driver receives a mount request, the file system driver reads predefined sectors from the disk using services of the disk""s device driver in order to check if data structures in the sector correspond to what is expected by this file system. If a file system driver recognizes the expected data structures, the file system driver returns a code to the operating system which indicates that the file system driver will serve all of the file requests for the new disk device. At this point the mount process is complete. A disk device with a mounted file system is also known as a volume.
As operating systems become more complex, file systems likewise become more complex. A file system for a computer network operating system may have hundreds of function routines. The vast majority of these function routines may provide seldom used, obscure functions not needed for basic file operations. Moreover, complex operating systems are often configured to optimize performance for specific types of devices. Typically, hard disk access performance is optimized because hard disks are capable of high data transfer rates and such access occurs nearly continuously in the operation of many computers and computer networks.
The organization of files within typical file systems of conventional operating systems is relatively inflexible. Conventional operating systems provide dividing a hard disk into several logical drives of varying size. Once the hard disk has been configured as one or more logical drives, alteration of the configuration is very difficult. Although the conventional operating systems permit changes to the logical drive configuration, this reconfiguration typically results in the destruction of the data in the reconfigured logical drives. Thus, before reconfiguring logical drives, the files stored on the logical drive must be backed up, and after reconfiguration, the files must be restored. This process of reconfiguring logical drives is very burdensome and exposes the files to damage. Furthermore, in most operating systems, only high level users, such as system administrators, have the security rights and skills to reconfigure logical drives. As a result, once a logical drive has been configured in a conventional operating system, it is rarely reconfigured.
Another characteristic of conventional operating systems, file system drivers and disk device drivers is that the contents of the logical drives cannot be customized. Conventional operating system such as Windows NT permit multiple users to have access to the files in a logical drive. However, the hierarchical representation of how the files are stored in the logical drive is identical for all users. Conventional operating systems include security means which may be used to limit access of certain users to certain files or parts of a logical drive. However, this does not alter the fact that there is only one hierarchical representation of how the files are stored in the logical drive.
Conventional operating systems are also limited in their visual representation of information about the files stored on logical drives. Conventional operating systems maintain only limited file information, such as date and time of creation and modification, user access rights, and size. However, beyond this basic file information attributes, the conventional operating systems do not store other attributes that the files may have obtained. For example, some types of data repository systems are known which store considerable amounts of information about files. This additional information includes version tracking and access tracking. The conventional operating systems do not store such additional information, and they also lack the ability to display the additional information. More particularly, the visual displays of files and file information through an operating system typically cannot be changed except through extensive alteration of the viewer.
One solution to these problems is to create and install a custom file system which replaces or otherwise augments the pre-existing or xe2x80x9cnativexe2x80x9d file system. Such a custom file system could be designed to allow freer reconfiguration, and to allow storage and display of more file information. However, implementing the hundreds of function routines included in a file system is an exceptionally complex task. If successful, the resulting custom file system would be an undesirably large and complex program which would be difficult to successfully debug, and cost an excessive amount to create.
Another solution is to provide an enterprise document management system (EDMS). An EDMS includes a database and is installed on top of an existing file system. The database itself comprises one or more files, and the objects which users would otherwise view as files are actually stored as records in the database. The major limitation of EDM systems is that they are not compatible with applications which are also installed on the operating system. To provide this compatibility, the applications must be modified to access the EDM database instead of the logical drives. Yet, by doing so, access to the logical drives from the applications becomes inconvenient and sometimes impossible. Furthermore, the users must be trained on the EDM system and how to use each specially modified application. Installation of an EDMS entails transfer of existing files into the EDM database. Such modifications, training and installation can entail huge expenses and severe workflow disruptions.
Another solution is shown in U.S. Pat. No. 5,752,005. In that patent a computer includes an operating system having a system manager and a native file system. An installable file system installs hooks at a core interface between the system manager and the native file system. Hooks are installed for only a portion of the many native function routines provided by the native file system. A virtual driver communicates with the native file system and simulates a file storage device having substantially no files stored thereon. This system is designed to provide access to foreign devices having a foreign file system. Foreign file system device requests for function routines that have not been hooked are handled by the native file system and virtual device. Foreign file system device requests for hooked function routines are handled by a foreign file system. This system is considered inadequate to solve the above-identified problems because it continues to be limited to the conventional single hierarchical representation of how the files are stored in the relevant mass storage devices. Furthermore, this system requires full implementation of the major file system routines, while preserving cache coherency and consistency. These major file system routinesxe2x80x94open, read, write, close, etc., are the most complex and expensive parts of a file system driver to develop.
The method comprises devices and methods for providing an installable file system using a basic file system driver, and for providing flexibility in the views of objects through an operating system.
In accordance with one aspect of the invention, there is a method of organizing files in an data processing system. The data processing system comprises an operating system, a native file system comprising native folders and native files, a first mass storage device having a native disk in which the native file system is stored, and a native file system driver for interfacing the operating system to the native file system. The method comprises first installing a virtual file system driver. Next, the virtual file system driver creates virtual disks having respective virtual file systems. The virtual file systems comprise virtual folders and virtual files. The virtual file systems include, for each virtual folder, a reference to a one of the native folders, and for each virtual file a reference to a one of the native files. The method further includes receiving requests to open specified virtual files, and invoking the native file system driver to open the native files referenced by virtual file system for the specified virtual files.
In accordance with one aspect of the invention, there is a data processing system comprising an operating system responsive to file access service requests of applications programs. The data processing system further comprises one or more mass storage devices, each mass storage device comprising one or more native disks. Each native disk stores a single native file system. The native file systems comprise native files, and the native file systems include names, attributes and locations of the respective native files stored in the native file system. The data processing system further comprises one or more native file system drivers, each native file system driver comprising function routines and file management structures for providing file access services to the operating system with respect to at least one of the native file systems. The native file system drivers each provide a single representation of the respective native file systems. The data processing system further comprises a virtual file system driver comprising function routines and file management structures for providing file access services to the operating system with respect to virtual files. At least one virtual file comprises a logical representation in a virtual file system of a one of the native files. The logical representations comprises a mapping of the one native file to the at least one virtual file. The virtual file system driver emulates the virtual file system to the operating system as an additional native file system. The virtual file system driver represents the structure of the virtual file systems in a user-defined manner without restriction as to the location of any particular native file in any particular native file system. The virtual file system driver, in response to a file access request for a one of the virtual files mapped from a native file, invokes the native file system driver which is associated with the native file system having the mapped native file, the invocation including a reference to the mapped native file.
In accordance with another aspect of the invention there is a method of representing data as files in a data processing system. The data processing system comprises an operating system having a default view component for providing default file attributes of files in a file system in a default view. The default view component of the operating system is accessible to applications programs. The data processing system further comprises one or more mass storage devices. Each mass storage device comprises one or more logical disks. Each logical disk stores a file system, the file systems comprising files, the file systems including names, attributes and locations of the respective files stored in the respective file systems. The data processing system further comprises one or more file system drivers. Each file system driver comprises function routines and file management structures for providing file access services to the operating system with respect to at least one of the file systems. The file system drivers each provide a single representation of the respective file systems. The data processing system also comprises a view application for providing configurable views of the files in the file systems. The configurable views include custom file attributes which are not available in the default views provided by the default view component of the operating system. The method comprises requesting by one of the applications programs a first view of a first defined part of one of the file systems. The method further comprises the default view component of the operating system providing a default view of the first defined part. The method further comprises requesting by one of the applications programs a second view of a second defined part of one of the file systems. The method further comprises substituting the view application for the default view component of the operating system with respect to the second defined part. The method further comprises the view application providing a non-default view of the second defined part.
In accordance with another aspect of the invention there is another method of representing data as files in a data processing system. The data processing system comprises a mass storage device. The mass storage device comprises a native disk storing a native file system. The native file system comprises plural native files. The native file system includes default file information for each file including a name, an attribute and a location of the file. The data processing system further comprises an operating system having a default view component for providing the default file information in a default view. The default view component of the operating system being accessible to applications programs. The data processing system further comprises a native file system driver. The native file system driver comprises function routines and file management structures for providing file access services to the operating system with respect to the native file system. The native file system driver provides a single representation of the native file systems. The method comprises installing a virtual file system driver in the data processing system. The virtual file system driver comprises function routines and file management structures. The method further comprises the virtual file system driver emulating a virtual file system to the operating system as an additional native file system. The virtual file system comprises virtual files, each virtual files representing an object. The method further comprises storing in the virtual file system user interface class identifier of the view application. The method further comprises a one of the applications programs requesting a view of a defined part of the virtual file system. The method further comprises substituting a view application for the default view component of the operating system with respect to the defined part of the virtual file system. The method further comprises loading the view application. The method further comprises the view application providing a custom view of the defined part of the virtual file system, the custom view including custom attributes relating to the objects.
Other aspects of the invention include devices, systems, programs and methods related to the matter described above.